// process
// attr:
// 1.process.argv   argv0
// 2.process.pid  
// 3.process.ppid

// api:
// 1.process.memiryUsage
// 2.process.cpuUsage
// 3.process.cwd
// 4.process.uptime
// 5.process.stdin   setEncoding   on:readable
// 6.process.stdout  write





// 查看内存消耗
// process.memoryUsage()
/**
* rss： 常驻内存
* heapToal: v8总内存大小
* heapUsed: v8已使用内存
* external: 扩展内存 - 底层模块占用的C/C++核心模块
* arrayBuffers: 缓冲区大小
*/

const changeMB = (bytes) => {
	return (bytes / 1024 / 1024).toFixed(2) + 'MB'
}

const info = process.memoryUsage()
// info.rss = changeMB(info.rss)
info.heapTotal = changeMB(info.heapTotal)
info.heapUsed = changeMB(info.heapUsed)
info.external = changeMB(info.external)
info.arrayBuffers = changeMB(info.arrayBuffers)
console.log(info);


// process.memoryUsage() 提供的 rss 属性值相同，但 process.memoryUsage.rss() 更快。
console.log(process.memoryUsage.rss());  //19591168


// CPU相关信息获取
/**
 * user: 用户占用的时间片段
 * system: 系统占用的时间片段
 */
const { cpuUsage } = require('process')
const startUsage = cpuUsage()
console.log(startUsage);
// 使 CPU 旋转 500 毫秒
const now = Date.now();
while (Date.now() - now < 500);
console.log(cpuUsage(startUsage));


// 返回 Node.js 进程的当前工作目录。
console.log(process.cwd());  //D:\myDomain\node\nodejs\examples\process

console.log(process.argv);
console.log(process.pid);
console.log(`This process is pid ${process.pid}`);
console.log(process.uptime());


process.on('exit', (code) => { // 退出时
	console.log(code); // 0
})

// process.stdout; // 是一个流，可以对他进行读写操作。
// console.log(process.stdout);
process.stdout.write('123'); // 123


// 设置字符编码
process.stdin.setEncoding('utf-8');
// 监听readable事件，是否可读也就是有无内容
process.stdin.on('readable', () => {
	// 获取输入的内容
	let chunk = process.stdin.read();
	if (chunk !== null) {
		process.stdout.write("输入了：" + chunk);
	}
})

